<?php

/**
 * Singleton. Agrega al container la configuración Clase => Inyeccion. Resuelve tambien el tipo de carga de este 
 * atributo.
 **/

class Exts_Dependency_Configuration_Command_Inyection extends Exts_Dependency_Configuration_Command_Abstract{
	public function invoke ($class, $configuration, Exts_Dependency_Configuration_Loader $loader) {
		$inyector = Exts_Dependency_Container::$InyectionStrategy;
		switch (ucwords($configuration->InyectionType)) {
			case "Singleton":
				$inyector->addMapping ($class, $configuration->InyectedClass, Exts_Dependency_Container::$SingletonStrategy);		
			break;
			case "Normal":
			default:
				$inyector->addMapping ($class, $configuration->InyectedClass, Exts_Dependency_Container::$NormalStrategy);		
		}
		$loader->getContainer()->addInstantiatorFor($class, Exts_Dependency_Container::$InyectionStrategy);
	}
}